package com.sky.mapper;

import com.github.pagehelper.Page;
import com.sky.annotation.AutoFill;
import com.sky.dto.EmployeePageQueryDTO;
import com.sky.entity.Employee;
import com.sky.enumeration.OperationType;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.time.LocalDate;

@Mapper
public interface EmployeeMapper {

  /**
   * 根据用户名查询员工
   * @param username
   * @return
   */
  @Select("select * from employee where username = #{username}")
  Employee getByUsername(String username);
  
  
  /**
   * 添加员工
   * @return
   */
  @Insert("insert into employee (name, username, password, phone, sex, id_number, status, create_time, update_time, create_user, update_user) " +
      "VALUES (#{name}, #{username}, #{password}, #{phone}, #{sex}, #{idNumber}, #{status}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser})")
  @AutoFill(value = OperationType.INSERT)
  void inster(Employee employee);
  
  
  /**
   * 使用PageHelper 插件分页
   */
  Page<Employee> page(EmployeePageQueryDTO queryDTO);
  
  /**
   * 根据id 动态修改员工信息。
   */
  @AutoFill(value = OperationType.UPDATE)
  void update(Employee employee);
  
  /**
   * 根据id查询员工信息
   */
  @Select("select * from employee where id = #{id}")
  Employee findById(Long id);
  
  /**
   * 获取当天新增的用户数量
   * @param date
   */
  @Select("select count(*) from employee where DATE(create_time) = #{date}")
  Integer getNewUserCountByDate(LocalDate date);
  
  /**
   * 获取当天之前的总用户量
   * @param date
   */
  @Select("select count(id) from employee where DATE(create_time) <= #{date}")
  Integer getTotalUserCountByDate(LocalDate date);
}
